#pragma once

/*
    日志消息类，进行日志中间消息的存储：
        1、日志的输出时间    用于过滤日志输出时间
        2、日志等级          用于过滤日志进行分析
        3、源文件名称
        4、源代码行号        用于定位出错代码位置
        5、线程ID           用于过滤出错线程
        6、日志主题消息      用于显示线程出现的具体问题
        7、日志器名称        当前支持多日志器同时使用
*/

#include "level.hpp"
#include "utility.hpp"
#include <thread>

namespace Log
{
    struct LogMsg
    {
        time_t _ctime;          // 日志产生的时间戳
        LogLevel::level _level; // 日志等级
        std::string _file;      // 源码文件名
        size_t _line;           // 行号
        std::thread::id _tid;   // 线程ID
        std::string _payload;   // 有效消息数据
        std::string _logger;    // 日志器名称

        LogMsg(LogLevel::level level, const std::string file,
               size_t line, const std::string msg, const std::string logger)
            : _ctime(utility::Date::now()),
              _level(level), _file(file),
              _line(line),
              _tid(std::this_thread::get_id()),
              _payload(msg),
              _logger(logger)
        {
        }
    };
}